/**
 * Created by zhangsong on 2017/12/21.
 */
const sharp = require('sharp');
const path = require('path');
const fs = require('fs');
const configure = {
  "image": [
    {
      "width": 500,
      "height": null,
      "flag": "500",
      "default": true
    }
  ]
};

/**
 * 根据宽度,按照宽高比压缩图片
 * @param file_path
 */
function compress(file_path, file) {
  return new Promise((resolve, reject)=> {
    const prefix = path.extname(file_path);
    if(!Array.isArray(configure['image'])){    // 如果配置文件中没有该选项,则直接 return
      console.error('配置文件错误,没有 image 数组');
      return reject('服務器配置錯誤');
    }
    const image = sharp(file);
    configure['image'].forEach((item)=> {
      let newFile;
      if(item.default){   // 如果该大小图片是默认图片,则不重命名
        newFile = file_path;
      }else{
        newFile = file_path.replace(prefix, 'x'+item.flag + prefix);
      }
      image.metadata().then(result => {
        return image.rotate().resize(item.width, item.height)
            .jpeg()
            .toBuffer();
      }).then(result => {
        console.log(newFile);
        return fs.appendFile(newFile, result);
      }).then((result)=> {
        if(item.default){
          resolve();
        }
      }).catch(error => {
        console.error(error);
      });
    });
  });
}
module.exports = compress;
